package Parser;

import Enumeration.ParserNames;
import Facade.ParserData;
import GUI.AObserver;
import java.util.ArrayList;
import java.util.Observer;

/**
 * @author Martin
 * @version 1.0
 * @created 22-III-2012 16:32:22
 */
public abstract class ACreatorParser {

	/**
	 * vsichni vytvoreni parsers, udrzujeme pro jejich ukonceni
	 */
	protected static ArrayList<AParser> allCreatedParsers;
	/**
	 * vsichni posluchaci jsou definovany v creator parseru, v samotnem parseru je
	 * reference na tyto data (predano v konstruktoru)
	 */
	protected ArrayList<AObserver> observers;
	//private AParser parser;

	public ACreatorParser(){
            allCreatedParsers = new ArrayList<AParser>();
            observers = new ArrayList<AObserver>();
	}

	/**
	 * 
	 * @param observer
	 */
	public void addObserver(AObserver observer){
            observers.add(observer);
	}

	/**
	 * bude pouštět parser podle predanych enum dat, muze postet i veci parseru na
	 * stejna parserData
	 * 
	 * @param parserData
	 * @param parserName
	 */
	public abstract void createParser(ParserData parserData, ParserNames parserName);
        
	/**
	 * vytvoreni vice parseru na vice stranek
	 * 
	 * @param parserData
	 * @param parserName
	 */
	public abstract void createParser(ParserData[] parserData, ParserNames parserName);

	/**
	 * ukonci vsechny parsery pomoci seznamu vsech parseru a jejich metody end
	 */
	public void endAll(){
            for(int i=0;i<allCreatedParsers.size();i++)
            {
                allCreatedParsers.get(i).end();
                //parser.end();
            }

	}

}